#ifndef SERIALPORT_H
#define SERIALPORT_H

#include "CommunicationInterface.h"
#include <QSerialPort>

/**
 * @brief 串口通信模块实现类
 * @details 继承自CommunicationInterface，提供串口初始化、数据发送等功能
 */
class SerialPort : public CommunicationInterface {
    Q_OBJECT
public:
    /**
     * @brief 构造函数
     * @param parent 父对象指针（默认nullptr）
     */
    explicit SerialPort(QObject *parent = nullptr);

    /**
     * @brief 初始化串口通信（基类接口实现）
     * @param params 配置参数QVariantMap，包含以下键值对：
     *        - "portName": QString 串口名称（如"COM1"）
     *        - "baudRate": int 波特率（如9600）
     * @return 初始化成功返回true，否则返回false
     */
    bool initialize(const QVariantMap &params) override;

    /**
     * @brief 反初始化并关闭串口
     */
    void uninitialize() override;

    /**
     * @brief 发送数据到串口
     * @param data 待发送的字节数据
     * @return 发送成功返回true，失败返回false
     */
    bool sendData(const QByteArray &data) override;

    /**
     * @brief 获取通信类型
     * @return 字符串"SerialPort"
     */
    QString type() const override;

    /**
     * @brief 获取当前状态
     * @return 状态描述字符串（如"connected"/"disconnected"）
     */
    QString status() const override;

private:
    QSerialPort *m_serialPort = nullptr;
    QString m_currentStatus;
};

#endif // SERIALPORT_H
